/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Biblioteca;

/**
 * ErrosMySQL
 *
 * Versao 1.0
 *
 * Data Criação 01/11/2013
 *
 * @author Igor
 */
public abstract class ErrosMySQL {

    public static String retornaMensagemErro(Exception e) {
        String msg = "";
        Boolean contatoSuporte = false;
        String msgContatoSuporte = "\nEntre em contato com o suporte técnico!\n";

        if (e.toString().contains("Communications link failure")
                || (e.toString().contains("Connection time out"))) {
            contatoSuporte = true;

            msg = "Erro de comunicação com o Banco de Dados.\n"
                    + "\n"
                    + "Possibilidades:\n"
                    + "Servidor de destino desligado;\n"
                    + "Servidor de Banco de Dados (MySQL) desligado.\n";
        } else if (e.toString().contains("Duplicate entry")
                && (e.toString().contains("UNIQUE"))) {
            contatoSuporte = true;

            //Localizo o campo que possui a restricao UNIQUE
            String value = e.toString();
            String[] arrayString = value.split("for key '");
            value = arrayString[1];
            arrayString = value.split("_UNIQUE");
            value = arrayString[0]; //Campo com restricao UNIQUE
            
            msg = "Erro ao salvar informação no Banco de Dados.\n"
                    + "Duplicidade de informação;\n"
                    + "\n"
                    + "Possibilidades:\n"
                    + "O campo <"+value+"> não permite valores repetidos;\n"
                    + "Já existe um registro com o valor de <"+value+"> digitado.\n";

        }else if (e.toString().contains("Unknown database")) {
            contatoSuporte = true;

            //Localizo o nome do data_base desconhecido
            String value = e.toString();
            String[] arrayString = value.split("Unknown database ");
            value = arrayString[1];
            
            msg = "Erro ao realizar login no Banco de Dados.\n"
                    + "Usuário <"+value+"> desconhecido.\n"
                    + "\n"
                    + "Possibilidades:\n"
                    + "O usuário <"+value+"> não existe no SGBD;\n"
                    + "O nome de usuário está errado.\n";

        }else if (e.toString().contains("Column")
                && (e.toString().contains("cannot be null"))) {
            contatoSuporte = true;

            //Localizo o campo que possui a restricao UNIQUE
            String value = e.toString();
            String[] arrayString = value.split("Column '");
            value = arrayString[1];
            arrayString = value.split("' cannot be null");
            value = arrayString[0]; //Campo com restricao UNIQUE
            
            msg = "Erro ao salvar informação no Banco de Dados.\n"
                    + "Valor não pode ser vazio ou nulo.\n"
                    + "\n"
                    + "Possibilidades:\n"
                    + "O campo <"+value+"> não aceita valores vazios ou nulos.\n";

        } else {
            msg = "Erro desconhecido, entre em contato com o suporte técnico!\n";
        }
        
        if(contatoSuporte){
            msg = msg+msgContatoSuporte;
        }
        
        return msg;
    }
}
